
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<HTML>

<HEAD>
   <TITLE>saelgv_c</TITLE>
</HEAD>

<BODY style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<A name="TOP"></A>

<table style="text-align: left; margin-left: auto; margin-right: auto; width: 800px;"
 border="0" cellpadding="5" cellspacing="2">
  <tbody>
    <tr>
      <td style="background-color: rgb(153, 153, 153); vertical-align: middle; text-align: center;">
      <div align="right"> 
      <small><small><a href="index.html">Index Page</a></small></small>
      </div>
      <b>saelgv_c</b> </td>
    </tr>

    <tr>
      <td style="vertical-align: top;">

<small><div align="center">
<A HREF="index.html#A">A</A>&nbsp;
<A HREF="index.html#B">B</A>&nbsp;
<A HREF="index.html#C">C</A>&nbsp;
<A HREF="index.html#D">D</A>&nbsp;
<A HREF="index.html#E">E</A>&nbsp;
<A HREF="index.html#F">F</A>&nbsp;
<A HREF="index.html#G">G</A>&nbsp;
<A HREF="index.html#H">H</A>&nbsp;
<A HREF="index.html#I">I</A>&nbsp;
<A HREF="index.html#J">J</A>&nbsp;
<A HREF="index.html#K">K</A>&nbsp;
<A HREF="index.html#L">L</A>&nbsp;
<A HREF="index.html#M">M</A>&nbsp;
<A HREF="index.html#N">N</A>&nbsp;
<A HREF="index.html#O">O</A>&nbsp;
<A HREF="index.html#P">P</A>&nbsp;
<A HREF="index.html#Q">Q</A>&nbsp;
<A HREF="index.html#R">R</A>&nbsp;
<A HREF="index.html#S">S</A>&nbsp;
<A HREF="index.html#T">T</A>&nbsp;
<A HREF="index.html#U">U</A>&nbsp;
<A HREF="index.html#V">V</A>&nbsp;
<A HREF="index.html#W">W</A>&nbsp;
<A HREF="index.html#X">X</A>&nbsp;
</div></small>
       <br>
       <table style="text-align: left; width: 60%; margin-left: auto; margin-right: auto;"
       border="0" cellspacing="2" cellpadding="2">
        <tbody>
          <tr>
            <td style="width: 50%; text-align: center;">
            <small>
              <a href="#Procedure">Procedure<br></a>
              <a href="#Abstract">Abstract<br></a>
              <a href="#Required_Reading">Required_Reading<br></a>
              <a href="#Keywords">Keywords<br></a>
              <a href="#Brief_I/O">Brief_I/O<br></a>
              <a href="#Detailed_Input">Detailed_Input<br></a>

              </small>
              </td>
              <td style="vertical-align: top; width: 50%; text-align: center;">
              <small>               <a href="#Detailed_Output">Detailed_Output<br></a>
              <a href="#Parameters">Parameters<br></a>
              <a href="#Exceptions">Exceptions<br></a>
              <a href="#Files">Files<br></a>
              <a href="#Particulars">Particulars<br></a>
              <a href="#Examples">Examples<br></a>

              </small>
              </td>
              <td style="vertical-align: top; width: 50%; text-align: center;">
              <small>               <a href="#Restrictions">Restrictions<br></a>
              <a href="#Literature_References">Literature_References<br></a>
              <a href="#Author_and_Institution">Author_and_Institution<br></a>
              <a href="#Version">Version<br></a>
              <a href="#Index_Entries">Index_Entries<br></a>
             </small>
            </td>
          </tr>
        </tbody>
</table>

<h4><a name="Procedure">Procedure</a></h4>
<PRE>
   void saelgv_c ( ConstSpiceDouble   vec1  [3],
                   ConstSpiceDouble   vec2  [3],
                   SpiceDouble        smajor[3],
                   SpiceDouble        sminor[3]  ) 

</PRE>
<h4><a name="Abstract">Abstract</a></h4>
<PRE>
 
   Find semi-axis vectors of an ellipse generated by two arbitrary 
   three-dimensional vectors. 
 </PRE>
<h4><a name="Required_Reading">Required_Reading</a></h4>
<PRE>
 
   <a href="../req/ellipses.html">ELLIPSES</a> 
 </PRE>
<h4><a name="Keywords">Keywords</a></h4>
<PRE>
 
   ELLIPSE 
   GEOMETRY 
   MATH 
 

</PRE>
<h4><a name="Brief_I/O">Brief_I/O</a></h4>
<PRE>
 
   Variable  I/O  Description 
   --------  ---  -------------------------------------------------- 
   vec1, 
   vec2       I   Two vectors used to generate an ellipse. 
   smajor     O   Semi-major axis of ellipse. 
   sminor     O   Semi-minor axis of ellipse. 
 </PRE>
<h4><a name="Detailed_Input">Detailed_Input</a></h4>
<PRE>
 
   vec1, 
   vec2           are two vectors that define an ellipse. 
                  The ellipse is the set of points in 3-space 
 
                     center  +  cos(theta) vec1  +  sin(theta) vec2 
 
                  where theta is in the interval ( -pi, pi ] and 
                  center is an arbitrary point at which the ellipse 
                  is centered.  An ellipse's semi-axes are 
                  independent of its center, so the vector center 
                  shown above is not an input to this routine. 
 
                  vec2 and vec1 need not be linearly independent; 
                  degenerate input ellipses are allowed. 
 </PRE>
<h4><a name="Detailed_Output">Detailed_Output</a></h4>
<PRE>
 
   smajor 
   sminor         are semi-major and semi-minor axes of the ellipse, 
                  respectively.  smajor and sminor may overwrite 
                  either of vec1 or vec2. 
 </PRE>
<h4><a name="Parameters">Parameters</a></h4>
<PRE>
 
   None. 
 </PRE>
<h4><a name="Exceptions">Exceptions</a></h4>
<PRE>
 
   1)  If one or more semi-axes of the ellipse is found to be the 
       zero vector, the input ellipse is degenerate.  This case is 
       not treated as an error; the calling program must determine 
       whether the semi-axes are suitable for the program's intended 
       use. 
 </PRE>
<h4><a name="Files">Files</a></h4>
<PRE>
 
   None. 
 </PRE>
<h4><a name="Particulars">Particulars</a></h4>
<PRE>
 
   We note here that two linearly independent but not necessarily 
   orthogonal vectors vec1 and vec2 can define an ellipse 
   centered at the origin:  the ellipse is the set of points in 
   3-space 
 
      center  +  cos(theta) vec1  +  sin(theta) vec2 
 
   where theta is in the interval (-pi, pi] and center is an 
   arbitrary point at which the ellipse is centered. 
 
   This routine finds vectors that constitute semi-axes of an 
   ellipse that is defined, except for the location of its center, 
   by vec1 and vec2.  The semi-major axis is a vector of largest 
   possible magnitude in the set 
 
      cos(theta) vec1  +  sin(theta) vec2 
 
   There are two such vectors; they are additive inverses of each 
   other. The semi-minor axis is an analogous vector of smallest 
   possible magnitude.  The semi-major and semi-minor axes are 
   orthogonal to each other.  If smajor and sminor are choices of 
   semi-major and semi-minor axes, then the input ellipse can also 
   be represented as the set of points 
 
      center  +  cos(theta) smajor  +  sin(theta) sminor 
 
   where theta is in the interval (-pi, pi]. 
 
   The capability of finding the axes of an ellipse is useful in 
   finding the image of an ellipse under a linear transformation. 
   Finding this image is useful for determining the orthogonal and 
   gnomonic projections of an ellipse, and also for finding the limb 
   and terminator of an ellipsoidal body. 
 </PRE>
<h4><a name="Examples">Examples</a></h4>
<PRE>
 
   1)  An example using inputs that can be readily checked by 
       hand calculation. 
 
          Let 
 
             vec1 = ( 1.,  1.,  1. ) 
             vec2 = ( 1., -1.,  1. ) 
 
         The function call 
 
            <b>saelgv_c</b> ( vec1, vec2, smajor, sminor );
 
         returns 
 
            smajor = ( -1.414213562373095, 
                        0.0, 
                       -1.414213562373095 ) 
         and 
 
            sminor = ( -2.4037033579794549D-17 
                        1.414213562373095, 
                       -2.4037033579794549D-17 ) 
 
 
   2)   This example is taken from the code of the CSPICE routine 
        <a href="pjelpl_c.html">pjelpl_c</a>, which finds the orthogonal projection of an ellipse 
        onto a plane.  The code listed below is the portion used to 
        find the semi-axes of the projected ellipse. 
 
 
           #include &quot;SpiceUsr.h&quot;
                 .
                 .
                 .
 
           /.
           Project vectors defining axes of ellipse onto plane. 
           ./
           <a href="vperp_c.html">vperp_c</a> ( vec1,   normal,  proj1 ); 
           <a href="vperp_c.html">vperp_c</a> ( vec2,   normal,  proj2 ); 

              . 
              . 
              . 

           <b>saelgv_c</b> ( proj1,  proj2,  smajor,  sminor );
 
 
        The call to <b>saelgv_c</b> determines the required semi-axes. 
 </PRE>
<h4><a name="Restrictions">Restrictions</a></h4>
<PRE>
 
   None. 
 </PRE>
<h4><a name="Literature_References">Literature_References</a></h4>
<PRE>
 
   [1]  Calculus, Vol. II.  Tom Apostol.  John Wiley &amp; Sons, 1969. 
        See Chapter 5, `Eigenvalues of Operators Acting on Euclidean 
        Spaces'. 
 </PRE>
<h4><a name="Author_and_Institution">Author_and_Institution</a></h4>
<PRE>
 
   N.J. Bachman   (JPL) 
   W.L. Taber     (JPL) 
 </PRE>
<h4><a name="Version">Version</a></h4>
<PRE>
 
   -CSPICE Version 1.0.0, 12-JUN-1999 (NJB)
</PRE>
<h4><a name="Index_Entries">Index_Entries</a></h4>
<PRE>
 
   semi-axes of ellipse from generating vectors 
 </PRE>
<h4>Link to routine saelgv_c source file <a href='../../../src/cspice/saelgv_c.c'>saelgv_c.c</a> </h4>

      </td>
    </tr>
  </tbody>
</table>

   <pre>Wed Jun  9 13:05:29 2010</pre>

</body>
</html>

